package com.tianzmp.ttq.admin.service;

import com.tianzmp.ttq.admin.controller.reqDto.MenuAddReqDto;
import com.tianzmp.ttq.admin.controller.reqDto.MenuPageListReqDto;
import com.tianzmp.ttq.admin.controller.reqDto.MenuUpdateReqDto;
import com.tianzmp.ttq.admin.controller.resDto.MenuListResDto;
import com.tianzmp.ttq.admin.controller.resDto.MenuTreeResDto;
import com.tianzmp.ttq.admin.entity.Menu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianzmp.ttq.admin.entity.PageInfo;
import com.tianzmp.ttq.admin.entity.UserInfo;

import java.util.List;

/**
 * <p>
 * 菜单 服务类
 * </p>
 *
 * @author ttq
 * @since 2022-07-30
 */
public interface IMenuService{


    /**
     * <p>
     *  exit pageInfo menu
     * </p>
     * @return list
     */
    public List<MenuListResDto> list();

    /**
     * <pre>
     *     select pageInfo menu list
     * </pre>
     * @param current   当前页
     * @param size      条数
     * @return pageInfo
     */
    public PageInfo<List<MenuTreeResDto>> pageList(MenuPageListReqDto dto);

    /**
     * <p>
     *     insert user
     * </p>
     * @param menu object
     * @return true / false
     */
    public boolean insert(MenuAddReqDto menu);

    /**
     * <p>
     *     update userInfo
     * </p>
     * @param menu
     * @return
     */
    public boolean update(MenuUpdateReqDto menu);


    /**
     * <p>
     *     select limit 1
     * </p>
     * @param id user - id
     * @return object
     */
    public Menu getById(Long id);

    /**
     * <p>
     *     delete user
     * </p>
     * @param userId user -id
     * @return true / false
     */
    public boolean delete(Long userId);

    /**
     * <p>
     *     用户授权
     * </p>
     * @param userId  用户id
     * @param roleIds 角色集
     * @return true / false
     */
    public boolean userAuthorize(Long userId,List<Long> roleIds);


}
